#ifndef NANE_LOGMANAGERIMPL__H
#   define NANE_LOGMANAGERIMPL__H

#   include "nane/core/crt/LogManager.h"
#   include "nane/core/crt/StdLogger.h"
#   include <vector>

namespace nane
{
    
    class LogManager::Implementation
        : public ILogSystem
    {
    public:
        Implementation( bool _enableStdLogger );
        ~Implementation();

        bool Initialize();
        void Shutdown();
        void RegisterLogger( ILogger* _logger );
        void UnregisterLogger( ILogger* _logger );
        void Log( const char* _message, const char* _file, const char* _line, const char* _function, ELogMessageLevel::raw_type _messageLevel );
        void SetMessagesLevel( ELogMessageLevel::raw_type _messagesLevel );
        
    public:
        ELogMessageLevel messagesLevel;
        std::vector<ILogger*> loggers;
        StdLogger stdLogger;
    };
    
}   // namespace nane

#endif  // NANE_LOGMANAGERIMPL__H
